With the advent of the computer age, computer and software users have grown accustomed to user-friendly software applications that help them write, calculate, organize, prepare presentations, send and receive electronic mail, make music, and the like. For example, modern electronic word processing applications allow users to prepare a variety of useful documents. Modern spreadsheet applications allow users to enter, manipulate, and organize data. Modern electronic slide presentation applications allow users to create a variety of slide presentations containing text, pictures, data or other useful objects. Modern database applications allow users to store, organize and exchange large amounts of data.
Most software applications provide one or more graphical user interfaces through which a user enters and edits data and from which the user accesses and utilizes various functionalities of the associated software application. A typical user interface includes a work area in which data may be entered, edited, and reviewed. Additionally, user interfaces typically include one or more buttons and/or controls operative for selecting the functionalities provided by the associated software application. For example, buttons or controls may be provided for printing or saving a document, buttons or controls may be provided for applying formatting properties to aspects of a document, and the like.
Often, a third party software developer creates a software add-in that may be added to an existing application for providing functionality not available from the existing application. For example, an add-in software application may provide a feature to a word processing application for adding specialized footnotes or endnotes to a document. Typically, in addition to providing additional functionality, the add-in application provides one or more new user interface components to the existing application user interfaces, such as a new toolbar, button(s), or other control(s), for accessing the additional functionality.
According to one prior method, third party developers are given access to an object model associated with an application's existing user interfaces for allowing customization of the existing user interfaces according to the needs of third party add-in software. Unfortunately, such prior methods have shortcomings because the object models for given user interfaces are not typically designed around common uses across a variety of different applications, for example, word processing applications, spreadsheet applications, slide presentation applications, and the like, and often such applications exhibit different and perhaps undesirable behaviors in association with custom user interface components.
It is with respect to these and other considerations that the present invention has been made.